<?php

    class CategoryController extends AdminController
    {
        /**
         * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
         * using two-column layout. See 'protected/views/layouts/column2.php'.
         */
//        public $layout = '//layouts/column2';

        public function actionAjaxUpdate()
        {
            $act = $_GET['act'];
            if ($act == 'doSortOrder') {
                $sortOrderAll = $_POST['sortOrder'];
                if (count($sortOrderAll) > 0) {
                    foreach ($sortOrderAll as $id => $sortOrder) {
                        $model       = $this->loadModel($id);
                        $model->rank = $sortOrder;
                        $model->save();
                    }
                }
            } else {
                $autoIdAll = $_POST['autoId'];
                if (count($autoIdAll) > 0) {
                    foreach ($autoIdAll as $autoId) {
                        $model = $this->loadModel($autoId);
                        if ($act == 'doDelete') {
                            //$model->delete();
                        } else {
                            if ($act == 'doActive')
                                $model->status = 1;
                            if ($act == 'doInactive')
                                $model->status = 0;
                            if ($model->save())
                                echo 'ok';
                            else
                                throw new Exception("Sorry", 500);
                        }
                    }
                }
            }
        }

        /**
         * Displays a particular model.
         * @param integer $id the ID of the model to be displayed
         */
        public function actionView($id)
        {
            $this->render('view', array(
                'model' => $this->loadModel($id),
            ));
        }

        /**
         * Creates a new model.
         * If creation is successful, the browser will be redirected to the 'view' page.
         */
        public function actionCreate()
        {
            $model = new Category;

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if (isset($_POST['Category'])) {
                $model->attributes = $_POST['Category'];
                if(isset($_POST['Category']['parentId'])){
                    $parentId = $_POST['Category']['parentId'];
                    $cat = Category::model()->findByPk($parentId);
                    if($cat){
                        $model->level = (int)$cat->level + 1;
                    }
                    else{
                        $model->level = 0;
                    }
                }
                else{
                    $model->level = 0;
                }
                
                if ($model->save())
                    $this->redirect(array('admin'));
            }

            $this->render('create', array(
                'model' => $model,
            ));
        }

        /**
         * Updates a particular model.
         * If update is successful, the browser will be redirected to the 'view' page.
         * @param integer $id the ID of the model to be updated
         */
        public function actionUpdate($id)
        {
            $model = $this->loadModel($id);

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if (isset($_POST['Category'])) {
                $model->attributes = $_POST['Category'];
                if ($model->save())
                    $this->redirect(array('admin'));
            }

            $this->render('update', array(
                'model' => $model,
            ));
        }

        /**
         * Deletes a particular model.
         * If deletion is successful, the browser will be redirected to the 'admin' page.
         * @param integer $id the ID of the model to be deleted
         */
        public function actionDelete($id)
        {
            $this->loadModel($id)->delete();

            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }

        /**
         * Lists all models.
         */
        public function actionIndex()
        {
            $dataProvider = new CActiveDataProvider('Category');
            $this->render('index', array(
                'dataProvider' => $dataProvider,
            ));
        }

        /**
         * Manages all models.
         */
        public function actionAdmin()
        {
            $model = new Category('search');
            $model->unsetAttributes(); // clear any default values
            if (isset($_GET['Category']))
                $model->attributes = $_GET['Category'];

            $this->render('sonha', array(
                'model' => $model,
            ));
        }

        /**
         * Returns the data model based on the primary key given in the GET variable.
         * If the data model is not found, an HTTP exception will be raised.
         * @param integer $id the ID of the model to be loaded
         * @return Category the loaded model
         * @throws CHttpException
         */
        public function loadModel($id)
        {
            $model = Category::model()->findByPk($id);
            if ($model === NULL)
                throw new CHttpException(404, 'The requested page does not exist.');
            return $model;
        }

        /**
         * Performs the AJAX validation.
         * @param Category $model the model to be validated
         */
        protected function performAjaxValidation($model)
        {
            if (isset($_POST['ajax']) && $_POST['ajax'] === 'category-form') {
                echo CActiveForm::validate($model);
                Yii::app()->end();
            }
        }
    }
